// 提供可复用的函数(钩子)
import { useIntersectionObserver } from '@vueuse/core'
import { ref } from 'vue'

/**
 * 数据懒加载
 * @param {Function} apiFn API函数
 */
export const uselazyloadData = (apiFn) => {
  const result = ref([])
  const target = ref(null)
  const { stop } = useIntersectionObserver(
    target,
    ([{ isIntersecting }], observerElement) => {
      // 如果进入可视区
      if (isIntersecting) {
        // 停止观察
        stop()
        // 调用api函数
        apiFn().then(data => {
          result.value = data.result
        })
      }
    },
    // 配置选项,相交的比例大于0
    {
      threshold: 0
    }
  )
  return {
    result, target
  }
}
